#ifndef _UI_H_
#define _UI_H_

#include <iostream>
#include <string>
#include "Logic.h"
#include "Storage.h"

using namespace std;

class UI
{
public:

	UI(void);
	~UI(void);

	// Welcome Message + create file
	void initialize(string);

	// Contains a loop
	void processing();

	// Get command type
	Logic::COMMAND_TYPE getCommandType();

	// To print out
	void show_to_user(string);

	// Prompts user for input;
	static const string MESSAGE_EXIT;
	Logic* logic;
	Storage* storage;
	string _feedback;
	void prompt_message(string &);

	// Save from buffer to file
	void write_to_file();

	// releasing memory to the system
	void memoryRelease();

	static UI* getInstance();
private:
	static UI* theOnlyUI;
	Logic::COMMAND_TYPE _command_type;
};

#endif